package com.kaifamiao.convert;

import java.time.*;
import java.util.Date;

/**
 * 1、先将 LocalDateTime 转换为 Instant
 *      将 LocalDateTime 转换为 Instant 时
 *      可以借助于 LocalDateTime类 从 ChronoLocalDateTime 接口中继承的默认方法
 *         default Instant toInstant( ZoneOffset offset )
 * 2、再将 Instant 转换为 Date
 */
public class LocalDateTimeToDate {

    public static void main(String[] args) {

        LocalDateTime dt = LocalDateTime.now();

        //ZoneOffset offset = ZoneOffset.of("+08:00");
        ZoneOffset offset = ZoneOffset.ofHours(8);
        Instant instant = dt.toInstant( offset );

        Date date = Date.from( instant );
        System.out.println( date );

        // 以下几行代码解决从 LocalDate 转换为 Date 的问题
        LocalDate localDate = LocalDate.of( 2003, 12, 31 );
        dt = localDate.atTime( LocalTime.MIN );
        date = Date.from( dt.toInstant( offset ) );
        System.out.println( date );

        // 以下几行代码解决从 LocalTime 转换为 Date 的问题
        LocalTime localTime = LocalTime.of( 12, 40, 50 );
        dt = localTime.atDate( LocalDate.of( 2022, 10, 1 ) );
        date = Date.from( dt.toInstant( offset ) );
        System.out.println( date );

    }

}
